Software products (such as computer programs) can be perfectly reproduced in an infinite number of copies. This is a major concern for vendors of the products wishing to protect their intellectual property rights (since any unaccounted use of the products results in unpaid royalties). The problem has been exacerbated in the last years by the widespread diffusion of the Internet, which further facilitates the uncontrolled distribution of this kind of products.
Typically, the vendor grants a license to use every product under specific terms and conditions. For example, in the case of a product subjected to a so-called “shrink-wrap” license (which is implicitly accepted upon opening its package), a user owning a hard-copy license certificate can install and run the product on any personal computer at a time. Alternatively, the vendor may provide a company with a multiple license for the same product; accordingly, it is possible to use the product concurrently on any computers up to a maximum number defined by the license.
In the above-mentioned situations, the control of the compliance with the applicable licenses is only left to the users. This operation is complex, time consuming and prone to errors. In any case, it is very difficult (if not impossible) to prevent unauthorized usage of the products. The problem is particular acute in large companies having thousands of computers.
Licensing applications have also been proposed in the last years to assist an administrator in efficiently controlling usage of products in a data processing system with distributed architecture. An example of licensing application is the “Tivoli License Manager” (or TLM) by IBM Corporation. The licensing application is based on a central server, which stores information about the licenses available for the system. A mechanism is then implemented for detecting the products running on the corresponding computers. For example, the products are instrumented to call the server before starting; more generally, an agent running on the background periodically detects the products that are running or it intercepts the launching of any new product. In any case, the products in execution on the computer are notified to the server; the server verifies whether the usage of each product is authorized and then allows the product to start or forces it to stop accordingly. This solution makes it possible to meter the actual usage of the products in the system and provides an efficient support for allocating the available licenses correctly.
Generally, the licensing application is capable of managing licenses based on a number of different policies; for example, the licenses may be restricted to a specific computer, may be reserved to a particular user, or may be distributed to a network of computers. A commonplace situation arises when the same license (also known as concurrent floating license) is shared among users of multiple computers. In this case, any computer may access the same product. Whenever a user needs to run the product, it submits a corresponding request to the server. The server authorizes different instances of the product to run (on corresponding computers) up to the maximum number of licenses thereof that are available.
However, in the above-described scenario a user needing to run the product may receive a refusal by the server (when all the licenses are already assigned to other users).
Therefore, the user is unable to perform the desired task until a corresponding license is released. This may adversely affect the activities of the user (with a possible impact on other correlated activities).
The above-mentioned drawbacks are particular acute when the use of the product relates to critical business aspects.